package FileOutputStream.project;

import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

/*
    FileOutputStreamw文件字节输出流：
        它 extends OutoutStream（是抽象类）.
    使用步骤：
        1.创建一个 FileOutputStreamw对象，在构造方法中传递要写入数据的目的地
        2.调用 FileOutputStreamw对象中的write（）方法，把数据写入到文件中
            三种写入方法：1.write(int b) ：写一个字节。
                        2.write(byte[] b) ：写入一个字节数组。
                            先定义一个byte类型的数组
                            如果写入的第一个字节为整数（0-127），那么显示的时候就会查询ASCII表
                            如果写入的第一个字节为负数，那么第一个字节回与第二个字节组成一个中文显示（一个汉字两个字节），系统查询默认码表（GBK）
                        3.write(byte[] b, int off, int len) ：写入一个子字节数组。
                            在已创建好的数组基础上去截取
                                    int off:数组的开始索引
                                    int len:截取几个字符
        3.释放资源 close（）：流的使用会占用内存，释放会提高程序的效率
 */
public class PracticeMain {
    public static void main(String[] args) throws IOException {  //这3步都会发生异常，所以要向上抛给它的父类
        //1.创建一个 FileOutputStreamw对象，在构造方法中传递要写入数据的目的地
        FileOutputStream fos = new FileOutputStream("E:\\idea\\IntelliJ IDEA 2020.3\\perject_idea\\20210325\\a.txt");//自动创建文件
        //2.调用 FileOutputStreamw对象中的write（）方法，把数据写入到文件中
        fos.write(97);

        byte[] bytes = {55,66,77,88,55,33};
        fos.write(bytes);
        fos.write(bytes,1,3);

        //写入字符的方法：可以使用String类中的方法把字符串转换为字节数组，在文件中显示(因为文件中只能存放字节)
               // byte[]  getBytes()  把字符串转换为字节数组（通过数组，一次可以写入多个字节）
        byte[] bytes2 = "你好！".getBytes();
        fos.write(bytes2);
        //3.释放资源 close（）：流的使用会占用内存，释放会提高程序的效率
        fos.close();
    }
}
